#ifndef _edaWrapperControl_h_
#define _edaWrapperControl_h_

#include <map>
#include <vector>

using namespace std;

#include "edaSearch.h"
#include "edaDAG.h"
#include "edaDefine.h"

class edaWrapperControl
{
  public:
    edaWrapperControl();
    int insertVertex(edaSearch *sa);
    int insertEdge(const int from, const int to);
    virtual bool search(edaSolution &sol) = 0;

  protected:
    vector<int> findReadyNodes() const;
    bool allDone() const;

    edaDAG<edaSearch*> taskDAG;
    map<int, int> taskStatus;
    int edgeNum;
    int vertexNum;
};

#endif
